package com.clwl.supervise.superviseapp.mapper.supervise;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clwl.supervise.superviseapp.entity.base.CommonSearchEntity;
import com.clwl.supervise.superviseapp.entity.supervise.JgDailyCheck;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface JgDailyCheckMapper extends BaseMapper<JgDailyCheck> {

    /**
     * 日常检查查询此此检查结果
     *
     * @param companyId
     * @param checkNum
     * @param year
     * @return
     */
    JgDailyCheck selectOneByCompanyIdAndCheckNumAndYear(@Param("companyId") Long companyId, @Param("checkNum") Integer checkNum, @Param("year") String year, @Param("type") String type);

    /**
     * 日常和双随机检查获取已检查完成的任务
     *
     * @param id
     * @return
     */
    List<JgDailyCheck> selectReadyByCompanyId(@Param("companyId") Object id);

    /**
     * 双随机检查获取检查信息
     *
     * @param companyId
     * @param year
     * @return
     */
    List<JgDailyCheck> selectByCompanyIdAndYearAndType(@Param("companyId") Long companyId, @Param("year") String year, @Param("type") String type);

    /**
     * 获取已经检查的信息
     *
     * @param companyId 企业id
     * @param checkNum  检查次数
     * @param yyyy      检查年份
     * @param type      检查类型 参考jg_daily_Check表
     * @return
     */
    List<JgDailyCheck> selectByCompanyIdAndCheckNumAndYearAndType(@Param("companyId") Long companyId, @Param("checkNum") int checkNum, @Param("year") String yyyy, @Param("type") String type);

    Map<String, Object> selectMapById(@Param("checkId") Long checkId);

    List<JgDailyCheck> selectRealyByCompanyId(@Param("companyId") Long companyId, @Param("size") int size);

    /**
     * 查询日常检查最后一次不合格的检查
     *
     * @param companyId 企业id
     * @return
     */
    JgDailyCheck selectLastNoQualifiedDailyByCompanyId(@Param("companyId") Long companyId);

    /**
     * 获取未完成的临时非计划任务
     *
     * @param companyId
     * @param yyyy      年份
     * @return
     */
    JgDailyCheck selectNoRealyTempUnplanned(@Param("companyId") Long companyId, @Param("year") String yyyy);

    /**
     * 获取应该检查到多少次，包含非临时的非计划任务，已经检查完成的临时非计划任务
     *
     * @param yyyy      年份
     * @param companyId
     * @return
     */
    JgDailyCheck selectLaseCheckNum(@Param("companyId") Long companyId, @Param("year") String yyyy);

    List<Map<String, Object>> selectCheckList(@Param("companyId") long companyId, @Param("indexList") List<Integer> indexList, @Param("year") String yyyy, @Param("type") String type);

    Long selectMaxCheckNum(@Param("companyId") Long companyId, @Param("year") String yyyy);

    List<Map<String, Object>> selectDailyMergeInspectList(@Param("companyId") Long companyId, @Param("params") CommonSearchEntity params);

    /**
     * 统计社会检查记录
     *
     * @param companyId   企业Id
     * @param supCategory 日常类型
     */
    public int queryLiabilityCount(@Param("companyId") Long companyId, @Param("supCategory") String supCategory);

    /**
     * 按日常检查ID获取日常检查状态
     * @param checkId 检查id
     * @return String
     */
    public String queryDailyCheckStatusByCheckId(@Param("checkId") Long checkId);

    /**
     * 获取风险等级评定值
     *
     * @param companyId 企业id
     * @param riskYear  评级年份
     * @return String
     */
    public String queryRiskLevel(@Param("companyId") Long companyId, @Param("riskYear") String riskYear);

    /**
     * 获取日常检查
     * @return
     */
    JgDailyCheck selectDailyCheck(@Param("companyId") Long companyId,@Param("year")  int year,@Param("checkNum")  Integer checkNum);
}